package com.cheer.common;


import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @author shizhenwei
 *
 * @param <T>用于向前台返还List所用
 */
@Data
public class PageInfo<T> implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 当前页码数
     */
    private int pageNum;
    /**
     * 每页显示的记录数
     */
    private int pageSize;
    /**
     * 开始行号
     */
    private long startRow;
    /**
     * 结束行号
     */
    private long endRow;
    /**
     *  总记录数
     */
    private long rows;
    /**
     *  总页码数
     */
    private int pages;


    // 存放本次分页查询出来的数据
    private List<T> list;


    public PageInfo(List<T> list, int pageNum, int pageSize) {

            // 当前页码
            this.pageNum = pageNum;
            // 每页显示的记录数
            this.pageSize = pageSize;
            // 总记录数
            this.rows = list.size();
            // 总页码数
            this.pages = (int)(( rows + pageSize - 1 ) / pageSize);
            // 当前页码大于总页码数时，当前页码=总页码数
            if (this.pageNum > this.pages) {
                this.pageNum = this.pages;
            }
            // 开始行号
            this.startRow = (this.pageNum * this.pageSize)-(this.pageSize-1);
            // 结束行号
            this.endRow = this.pageNum * this.pageSize;
            //当结束行号>总行数时，结束行号=总行数
            if(this.endRow > rows) {
                this.endRow = rows;
            }

    }


    public int getPageNum() {
        return pageNum;
    }


    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }


    public int getPageSize() {
        return pageSize;
    }


    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }


    public long getStartRow() {
        return startRow;
    }


    public void setStartRow(long startRow) {
        this.startRow = startRow;
    }


    public long getEndRow() {
        return endRow;
    }


    public void setEndRow(long endRow) {
        this.endRow = endRow;
    }


    public long getRows() {
        return rows;
    }


    public void setRows(long rows) {
        this.rows = rows;
    }


    public int getPages() {
        return pages;
    }


    public void setPages(int pages) {
        this.pages = pages;
    }


    public List<T> getList() {
        return list;
    }


    public void setList(List<T> list) {
        this.list = list;
    }


    public static long getSerialversionuid() {
        return serialVersionUID;
    }

}